\section{O que é JDBC?}

A JDBC (\emph{\textbf{J}ava \textbf{D}ata\textbf{b}ase \textbf{C}onnectivity \textbf{A}PI}) é uma \gls{api} (\glssymbol{api}) para acesso a bases de dados. A JDBC é uma \emph{SQL-level API} \cite{Reese2001} o que significa que é possível construir statements SQL e introduzi-las em chamadas a código Java. Isso faz com que se esteja praticamente a utilizar SQL e ao mesmo tempo tem-se acesso ao mundo orientado a objectos em que os resultados dos pedidos à base de dados são objectos Java e os problemas de acesso são resolvidos com a gestão de excepções. 
O objectivo principal do JDBC é funcionar de modo simples e flexível.

A JDBC não foi a primeira tentativa de uma solução para o acesso universal a bases de dados. Uma das outras soluções que se destacam é a Open DataBase Connectivity (ODBC) \cite{Easysoft2011,MSODBC}, que também tem como principal objectivo fornecer uma interface uniforme de acesso a bases de dados. No entanto sofre de um pouco de excesso de complexidade \cite{Reese2001}.

O desenvolvimento da JDBC foi influenciado pelas APIs já existentes, tais como a ODBC e a X/Open SQL Call Level Interface (CLI), e foi tido o cuidado de reutilizar as principais abstracções existentes nessas APIs, com o intuito de melhorar a aceitação por parte dos fabricantes de base de dados, e aproveitar o conhecimento já existente dos utilizadores de ODBC e SQL CLI \cite{Reese2001}.

A API JDBC é definida em dois pacotes Java \cite{JDBC,Parsian2005}:
\begin{itemize}
  \item \texttt{java.sql}\cite{JAVASQL} fornece a API de acesso aos dados (normalmente guardados numa base de dados relacional). É neste pacote que se encontram as classes mais usadas: \emph{Connection}, \emph{ResultSet}, \emph{Statement} e \emph{PreparedStatement}.
  \item \texttt{javax.sql}\cite{JAVAXSQL} fornece a API de acesso aos serviços do servidor. Este pacote fornece serviços para J2EE, tais como \emph{DataSouce} e \emph{RowSet}.
\end{itemize}

Entre as vantagens da JDBC destacam-se a possibilidade de utilizar os sistemas de base de dados já existentes, a facilidade de aprendizagem, simplicidade na instalação e de manutenção barata. Não há a necessidade de configurações de rede. O URL JDBC contém toda a informação necessária para estabelecer a ligação \cite{JDBCOVERVIEW}.
